
// 路由控制权限
import router from '@/router'
import store from '@/store'

import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'

const whiteList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  const token = store.getters.token
  //   const token = store.state.token
  if (token) {
    if (to.path === '/login') {
      next('/')
      Nprogress.done()
    } else {
      // 获取用户信息
      // 当到前置守卫的原因是，当我们跳转到首页再去获取用户信息，此时已经太晚，不同角色能看到的内容是不一样的
      // 看到的内容由用户信息决定
      // 但是当我们已经在首页时，切换到首页内的不同组件也会触发前置守卫，每次切换组件就会发送ajax 这会造成服务器压力，
      // 故当我们在首页时已经有用户信息，由此判断是否发送ajax
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/userInfo')
      }

      next()
    }
  } else {
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
      Nprogress.done()
    }
  }
})

// 后置守卫
router.afterEach((to, from) => {
//   Nprogress.done()
  setTimeout(function() {
    Nprogress.done()
  }, 500)
})
